Data from those floats are automatically downloaded in the repo by a github action, so we can use localftp source from argopy to check the data.
Here we work with argopy (https://argopy.readthedocs.io), so with xarray datasets
author = "kevin.balem@ifremer.fr"
from argopy import IndexFetcher, DataFetcher
import matplotlib.pyplot as plt
import cmocean as cm
from matplotlib.ticker import MaxNLocator
from matplotlib.lines import Line2D
import cartopy.crs as ccrs
plt.rcParams['axes.grid'] = True
import numpy as np
import gsw
import xarray as xr
import pandas as pd
/opt/anaconda3/lib/python3.7/site-packages/statsmodels/tools/_testing.py:19: FutureWarning: pandas.util.testing is deprecated. Use the functions in the public API at pandas.testing instead. import pandas.util.testing as tm
wmos = [6903075,6903076]
IndexFetcher(src='erddap',cache=False).float(wmos).plot()
(<Figure size 720x720 with 1 Axes>, <cartopy.mpl.geoaxes.GeoAxesSubplot at 0x7f9c9a676be0>)
# GET DATA FROM REPO DATA COPY (cache=False because new profiles are added to the repo)
ds = DataFetcher(cache=False,src='localftp',local_ftp='/export/home/kbalem/Bureau/earise-rbr/data/floats/ftp',mode='expert').float(wmos).to_xarray()
# CALCULATE TEOS10 VARIABLE
ds.argo.teos10(['SA','SIG0','PTEMP'])
# TURN TO PROFILES
ds = ds.argo.point2profile()
ds0=ds.where(ds['PLATFORM_NUMBER']==wmos[0],drop=True)
ds1=ds.where(ds['PLATFORM_NUMBER']==wmos[1],drop=True)
def full_profiles(ds0=ds0,ds1=ds1,markersize=1):
fig,ax = plt.subplots(len(wmos),2,figsize=(16,len(wmos)*8),sharey=True)
ax[0,0].invert_yaxis();
ax[0,0].plot(ds0['TEMP'],-gsw.z_from_p(ds0['PRES'],ds0['LATITUDE'].mean()),'.k',markersize=markersize)
ax[0,1].plot(ds0['PSAL'],-gsw.z_from_p(ds0['PRES'],ds0['LATITUDE'].mean()),'.k',markersize=markersize)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[0,0].set_ylabel('Depth',fontsize='large',fontweight='bold')
a=ax[0,1].text(1.05,0.4,'float '+str(wmos[0]),rotation="vertical",transform = ax[0,1].transAxes, fontsize='large', fontweight='bold')
ax[0,0].set_xlabel('Temperature',fontsize='large',fontweight='bold')
ax[0,1].set_xlabel('Salinity',fontsize='large',fontweight='bold')
ax[1,0].plot(ds1['TEMP'],-gsw.z_from_p(ds1['PRES'],ds1['LATITUDE'].mean()),'.k',markersize=markersize)
ax[1,1].plot(ds1['PSAL'],-gsw.z_from_p(ds1['PRES'],ds1['LATITUDE'].mean()),'.k',markersize=markersize)
ax[1,0].set_ylabel('Depth',fontsize='large',fontweight='bold')
a=ax[1,1].text(1.05,0.4,'float '+str(wmos[1]),rotation="vertical",transform = ax[1,1].transAxes, fontsize='large', fontweight='bold')
ax[1,0].set_xlabel('Temperature',fontsize='large',fontweight='bold')
ax[1,1].set_xlabel('Salinity',fontsize='large',fontweight='bold')
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
return fig,ax
fig,ax = full_profiles(ds0=ds0.isel(N_PROF=1),ds1=ds1.isel(N_PROF=1))
# TS DIAGRAM
def full_ts(ds0=ds0,ds1=ds1,vmin=25.95,vmax=27.8,sigma=8):
mint=ds['PTEMP'].min()
maxt=ds['PTEMP'].max()
mins=ds['SA'].min()
maxs=ds['SA'].max()
tempL=np.linspace(mint-1,maxt+1,156)
salL=np.linspace(mins-1,maxs+1,156)
Tg, Sg = np.meshgrid(tempL,salL)
sigma_theta = gsw.sigma0(Sg, Tg)
fig,ax=plt.subplots(1,2,figsize=(25,10))
cs = ax[0].contour(Sg, Tg, sigma_theta,sigma, colors='grey', zorder=1)
cl=ax[0].clabel(cs,fontsize=10,inline=False,fmt='%.1f')
sc=ax[0].scatter(ds0['SA'],ds0['PTEMP'],c=ds0['SIG0'],s=10,cmap=cm.cm.matter,vmin=vmin,vmax=vmax)
ax[0].set_xlabel('Salinity ($‰$)')
ax[0].set_ylabel('Temperature[$^\circ$C]')
ax[0].set_title(str(wmos[0]),fontsize=14, fontweight='bold')
ax[0].xaxis.set_major_locator(MaxNLocator(nbins=6))
ax[0].yaxis.set_major_locator(MaxNLocator(nbins=8))
ax[0].tick_params(direction='out')
cs = ax[1].contour(Sg, Tg, sigma_theta, sigma, colors='grey', zorder=1)
cl=ax[1].clabel(cs,fontsize=10,inline=False,fmt='%.1f')
sc=ax[1].scatter(ds1['SA'],ds1['PTEMP'],c=ds1['SIG0'],s=10,cmap=cm.cm.matter,vmin=vmin,vmax=vmax)
ax[1].set_xlabel('Salinity ($‰$)')
ax[1].set_ylabel('Temperature[$^\circ$C]')
ax[1].set_title(str(wmos[1]),fontsize=14, fontweight='bold')
ax[1].xaxis.set_major_locator(MaxNLocator(nbins=6))
ax[1].yaxis.set_major_locator(MaxNLocator(nbins=8))
ax[1].tick_params(direction='out')
cb=plt.colorbar(sc,ax=ax.ravel().tolist())
cb.ax.tick_params(direction='out')
cb.set_label('Density[kg m$^{-3}$]')
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0, label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10)],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0, label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10)],loc='lower right')
return fig,ax
fig,ax = full_ts()
# WOA OPENDAP URL FOR 2005-2017, GLOBAL 1/4°
woa_temp='https://www.ncei.noaa.gov/thredds-ocean/dodsC/ncei/woa/temperature/A5B7/0.25/woa18_A5B7_t13_04.nc'
woa_psal='https://www.ncei.noaa.gov/thredds-ocean/dodsC/ncei/woa/salinity/A5B7/0.25/woa18_A5B7_s13_04.nc'
# LOAD DATASETS, No need to decode times for a clim
woat = xr.open_dataset(woa_temp,decode_times=False)
woas = xr.open_dataset(woa_psal,decode_times=False)
# INTERPOLATE WOA T/S/SIG TO FLOAT POSITION
woat_float0 = woat['t_mn'].interp(lat=ds0['LATITUDE'],lon=ds0['LONGITUDE'],method='linear').squeeze().to_dataset()
woas_float0 = woas['s_mn'].interp(lat=ds0['LATITUDE'],lon=ds0['LONGITUDE'],method='linear').squeeze().to_dataset()
woa_float0 = xr.merge([woat_float0,woas_float0])
woat_float1 = woat['t_mn'].interp(lat=ds1['LATITUDE'],lon=ds1['LONGITUDE'],method='linear').squeeze().to_dataset()
woas_float1 = woas['s_mn'].interp(lat=ds1['LATITUDE'],lon=ds1['LONGITUDE'],method='linear').squeeze().to_dataset()
woa_float1 = xr.merge([woat_float1,woas_float1])
# Reduce depth range
woa_float0 = woa_float0.sel(depth=slice(0,2000))
woa_float1 = woa_float1.sel(depth=slice(0,2000))
fig,ax=full_profiles()
ax[0,0].plot(woa_float0['t_mn'],woa_float0['depth'],'.r',markersize=4)
ax[0,1].plot(woa_float0['s_mn'],woa_float0['depth'],'.r',markersize=4)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(woa_float1['t_mn'],woa_float1['depth'],'.r',linewidth=1)
ax[1,1].plot(woa_float1['s_mn'],woa_float1['depth'],'.r')
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
<matplotlib.legend.Legend at 0x7f9c77756e10>
# ZOOM
fig,ax=full_profiles(markersize=4)
ax[0,0].set_ylim(2000,1500)
ax[0,0].plot(woa_float0['t_mn'],woa_float0['depth'],'.r',markersize=8)
ax[0,1].plot(woa_float0['s_mn'],woa_float0['depth'],'.r',markersize=8)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(woa_float1['t_mn'],woa_float1['depth'],'.r',linewidth=1)
ax[1,1].plot(woa_float1['s_mn'],woa_float1['depth'],'.r')
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='WOA ',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# GSW
pr0 = np.empty([len(woa_float0['depth']),len(woa_float0['N_PROF'])])
pr1 = np.empty([len(woa_float1['depth']),len(woa_float1['N_PROF'])])
for i in range(len(woa_float0['N_PROF'])):
pr0[:,i]=gsw.p_from_z(-woa_float0['depth'],woa_float0['LATITUDE'].isel(N_PROF=i))
woa_float0['PRES']=xr.DataArray(pr0,dims=['depth','N_PROF'])
woa_float0['SA']=xr.DataArray(gsw.SA_from_SP(woa_float0['s_mn'],woa_float0['PRES'],woa_float0['LONGITUDE'],woa_float0['LATITUDE']),dims=['depth','N_PROF'])
woa_float0['PTEMP']=xr.DataArray(gsw.pt0_from_t(woa_float0['SA'],woa_float0['t_mn'],woa_float0['PRES']),dims=['depth','N_PROF'])
woa_float0['SIG0']=xr.DataArray(gsw.sigma0(woa_float0['SA'], woa_float0['PTEMP']),dims=['depth','N_PROF'])
for i in range(len(woa_float1['N_PROF'])):
pr0[:,i]=gsw.p_from_z(-woa_float1['depth'],woa_float1['LATITUDE'].isel(N_PROF=i))
woa_float1['PRES']=xr.DataArray(pr0,dims=['depth','N_PROF'])
woa_float1['SA']=xr.DataArray(gsw.SA_from_SP(woa_float1['s_mn'],woa_float1['PRES'],woa_float1['LONGITUDE'],woa_float1['LATITUDE']),dims=['depth','N_PROF'])
woa_float1['PTEMP']=xr.DataArray(gsw.pt0_from_t(woa_float1['SA'],woa_float1['t_mn'],woa_float1['PRES']),dims=['depth','N_PROF'])
woa_float1['SIG0']=xr.DataArray(gsw.sigma0(woa_float1['SA'], woa_float1['PTEMP']),dims=['depth','N_PROF'])
woa_float1
<xarray.Dataset>
Dimensions: (N_PROF: 20, depth: 67)
Coordinates:
* N_PROF (N_PROF) int64 0 21 22 23 24 25 26 27 ... 32 33 34 35 36 37 38 39
* depth (depth) float64 0.0 5.0 10.0 15.0 ... 1.9e+03 1.95e+03 2e+03
time float32 73.5
lat (N_PROF) float64 29.17 29.15 29.1 29.09 ... 30.41 30.57 30.56
lon (N_PROF) float64 -19.0 -19.02 -19.12 ... -18.55 -18.43 -18.29
TIME (N_PROF) datetime64[ns] 2020-12-11T10:25:00 ... 2021-06-10T05:...
LONGITUDE (N_PROF) float64 -19.0 -19.02 -19.12 ... -18.55 -18.43 -18.29
LATITUDE (N_PROF) float64 29.17 29.15 29.1 29.09 ... 30.41 30.57 30.56
Data variables:
t_mn (depth, N_PROF) float64 nan nan nan nan nan ... nan nan nan nan
s_mn (depth, N_PROF) float64 36.85 36.85 nan nan ... nan nan nan nan
PRES (depth, N_PROF) float64 0.0 0.0 0.0 ... 2.024e+03 2.024e+03
SA (depth, N_PROF) float64 37.02 37.02 nan nan ... nan nan nan nan
PTEMP (depth, N_PROF) float64 nan nan nan nan nan ... nan nan nan nan
SIG0 (depth, N_PROF) float64 nan nan nan nan nan ... nan nan nan nanarray([ 0, 21, 22, 23, 24, 25, 26, 27, 28, 29, 30, 31, 32, 33, 34, 35, 36, 37,
38, 39])array([ 0., 5., 10., 15., 20., 25., 30., 35., 40., 45.,
50., 55., 60., 65., 70., 75., 80., 85., 90., 95.,
100., 125., 150., 175., 200., 225., 250., 275., 300., 325.,
350., 375., 400., 425., 450., 475., 500., 550., 600., 650.,
700., 750., 800., 850., 900., 950., 1000., 1050., 1100., 1150.,
1200., 1250., 1300., 1350., 1400., 1450., 1500., 1550., 1600., 1650.,
1700., 1750., 1800., 1850., 1900., 1950., 2000.])array(73.5, dtype=float32)
array([29.16698167, 29.14661667, 29.10236333, 29.09201167, 29.05589833,
29.16621833, 29.403165 , 29.61847333, 29.87339 , 30.188525 ,
30.25565833, 30.11950667, 29.839565 , 29.52730333, 29.397985 ,
29.63578667, 30.05389167, 30.41144667, 30.56528833, 30.55954167])array([-19.00256167, -19.01972333, -19.11748333, -19.19157167,
-19.21113333, -19.24770667, -19.31360333, -19.471775 ,
-19.623935 , -19.645155 , -19.76130833, -19.79596 ,
-19.675635 , -19.46817667, -18.98621167, -18.52723167,
-18.43598333, -18.54520833, -18.42694833, -18.29108833])array(['2020-12-11T10:25:00.000000000', '2020-12-12T05:42:20.000000000',
'2020-12-22T05:41:20.000000000', '2021-01-01T05:44:20.000000000',
'2021-01-11T05:30:20.000000000', '2021-01-21T05:26:20.000000000',
'2021-01-31T05:33:20.000000000', '2021-02-10T05:39:20.000000000',
'2021-02-20T05:51:20.000000000', '2021-03-02T05:49:20.000000000',
'2021-03-12T05:39:20.000000000', '2021-03-22T05:32:20.000000256',
'2021-03-31T15:29:20.000000000', '2021-04-11T05:46:20.000000000',
'2021-04-21T05:43:20.000000000', '2021-05-01T05:36:20.000000000',
'2021-05-11T05:34:20.000000000', '2021-05-21T05:33:20.000000000',
'2021-05-31T05:34:20.000000000', '2021-06-10T05:35:20.000000000'],
dtype='datetime64[ns]')array([-19.00256167, -19.01972333, -19.11748333, -19.19157167,
-19.21113333, -19.24770667, -19.31360333, -19.471775 ,
-19.623935 , -19.645155 , -19.76130833, -19.79596 ,
-19.675635 , -19.46817667, -18.98621167, -18.52723167,
-18.43598333, -18.54520833, -18.42694833, -18.29108833])array([29.16698167, 29.14661667, 29.10236333, 29.09201167, 29.05589833,
29.16621833, 29.403165 , 29.61847333, 29.87339 , 30.188525 ,
30.25565833, 30.11950667, 29.839565 , 29.52730333, 29.397985 ,
29.63578667, 30.05389167, 30.41144667, 30.56528833, 30.55954167])array([[ nan, nan, nan, ..., 19.01039807,
18.90984795, 18.98240869],
[ nan, nan, nan, ..., 18.97005256,
18.89672097, 18.94847536],
[19.90413882, 19.92035109, nan, ..., 18.95651843,
18.89662712, 18.94794342],
...,
[ 4.61089416, 4.60302342, 4.59258237, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[36.84969759, 36.84659114, nan, ..., nan,
nan, 36.85349887],
[36.8497734 , 36.84663206, nan, ..., nan,
nan, 36.86229364],
[36.84939684, 36.84614153, nan, ..., nan,
nan, 36.86327018],
...,
[35.13615922, 35.13479267, 35.13258462, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[ 0. , 0. , 0. , ..., 0. ,
0. , 0. ],
[ 5.03398365, 5.03397561, 5.03395814, ..., 5.03448182,
5.03454428, 5.03454195],
[ 10.06809038, 10.06807429, 10.06803935, ..., 10.06908674,
10.06921166, 10.06920699],
...,
[1921.68375225, 1921.68066808, 1921.67397087, ..., 1921.87474249,
1921.8986882 , 1921.89779244],
[1972.4892769 , 1972.48611085, 1972.47923582, ..., 1972.68533806,
1972.70991956, 1972.70900001],
[2023.30671045, 2023.30346247, 2023.29640955, ..., 2023.5078448 ,
2023.53306235, 2023.53211901]])array([[37.02367059, 37.02054927, nan, ..., nan,
nan, 37.02750527],
[37.02375299, 37.02059666, nan, ..., nan,
nan, 37.03634423],
[37.02338065, 37.02010989, nan, ..., nan,
nan, 37.0373279 ],
...,
[35.30645312, 35.30508533, 35.30287918, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[ nan, nan, nan, ..., nan,
nan, 18.98240869],
[ nan, nan, nan, ..., nan,
nan, 18.94757269],
[19.9022703 , 19.91848154, nan, ..., nan,
nan, 18.94613791],
...,
[ 4.44131988, 4.4335649 , 4.42327891, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])array([[ nan, nan, nan, ..., nan,
nan, 26.4295135 ],
[ nan, nan, nan, ..., nan,
nan, 26.44518668],
[26.18461764, 26.17783637, nan, ..., nan,
nan, 26.44629864],
...,
[27.85004258, 27.84982095, 27.84921646, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan],
[ nan, nan, nan, ..., nan,
nan, nan]])# TS DIAGRAM
fig,ax = full_ts()
sc_b=ax[0].scatter(woa_float0['SA'],woa_float0['PTEMP'],c=woa_float0['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k')
sc_b=ax[1].scatter(woa_float1['SA'],woa_float1['PTEMP'],c=woa_float1['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k')
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c740686a0>
# ZOOM
fig,ax = full_ts(vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(woa_float0['SA'],woa_float0['PTEMP'],c=woa_float0['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k')
sc_b=ax[1].scatter(woa_float1['SA'],woa_float1['PTEMP'],c=woa_float1['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k')
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='WOA',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c73ddaac8>
plt.figure()
# FETCH PROFILES META IN OUR REGION
IndexFetcher(cache=True,src='erddap').region([-19.8,-18.8,29.0,30.0]).plot()
# RBR PROFILES
plt.plot(ds['LONGITUDE'],ds['LATITUDE'],'k*',markersize=10)
[<matplotlib.lines.Line2D at 0x7f9c9a6d64e0>]
<Figure size 432x288 with 0 Axes>
# GET DATA FROM ERDDAP, in standard mode to automatically keep good data
px = DataFetcher(cache=True,src='erddap',mode='standard').region([-19.8,-18.8,29.0,30.0,0.,2000.]).to_xarray()
# CALCULATE TEOS10 VARIABLE
px.argo.teos10(['SA','SIG0','PTEMP'])
# TURN TO PROFILES
px = px.argo.point2profile()
# Keep only december to may profiles
px['MONTH']=xr.DataArray(np.array(pd.DatetimeIndex(px['TIME'].values).month),dims='N_PROF')
px = px.where((px['MONTH']<=5)|(px['MONTH']==12), drop=True)
px
<xarray.Dataset>
Dimensions: (N_LEVELS: 1018, N_PROF: 59)
Coordinates:
* N_PROF (N_PROF) int64 1 2 12 14 15 ... 106 107 108 109 110
* N_LEVELS (N_LEVELS) int64 0 1 2 3 4 ... 1014 1015 1016 1017
TIME (N_PROF) datetime64[ns] 2002-05-14T05:00:00 ... 20...
LONGITUDE (N_PROF) float64 -19.3 -19.23 ... -19.48 -18.96
LATITUDE (N_PROF) float64 29.08 29.31 29.78 ... 29.51 29.58
Data variables:
CONFIG_MISSION_NUMBER (N_PROF) float64 2.0 2.0 2.0 1.0 ... 2.0 2.0 2.0 2.0
CYCLE_NUMBER (N_PROF) float64 5.0 6.0 60.0 6.0 ... 13.0 14.0 15.0
DATA_MODE (N_PROF) object 'D' 'D' 'D' 'D' ... 'R' 'R' 'R' 'R'
DIRECTION (N_PROF) object 'A' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A'
PLATFORM_NUMBER (N_PROF) float64 1.9e+06 1.9e+06 ... 6.903e+06
POSITION_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
PRES (N_PROF, N_LEVELS) float32 15.0 25.0 35.0 ... nan nan
PRES_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
PSAL (N_PROF, N_LEVELS) float32 36.873 36.869 ... nan nan
PSAL_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
PTEMP (N_PROF, N_LEVELS) float64 19.41 19.41 ... nan nan
SA (N_PROF, N_LEVELS) float64 37.05 37.04 ... nan nan
SIG0 (N_PROF, N_LEVELS) float64 26.35 26.35 ... nan nan
TEMP (N_PROF, N_LEVELS) float32 19.41 19.41 ... nan nan
TEMP_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
TIME_QC (N_PROF) float64 1.0 1.0 1.0 1.0 ... 1.0 1.0 1.0 1.0
MONTH (N_PROF) float64 5.0 5.0 3.0 12.0 ... 2.0 4.0 4.0 5.0
Attributes:
DATA_ID: ARGO
DOI: http://doi.org/10.17882/42182
Fetched_from: https://www.ifremer.fr/erddap
Fetched_by: kbalem
Fetched_date: 2021/06/15
Fetched_constraints: [x=-19.80/-18.80; y=29.00/30.00; z=0.0/2000.0]
Fetched_uri: ['https://www.ifremer.fr/erddap/tabledap/ArgoFloats...
history: Variables filtered according to DATA_MODE; Variable...array([ 1, 2, 12, 14, 15, 25, 26, 27, 28, 42, 43, 32, 33, 34,
35, 48, 17, 49, 50, 18, 19, 51, 52, 44, 45, 46, 47, 69,
70, 71, 72, 73, 74, 75, 76, 20, 88, 89, 90, 91, 92, 93,
94, 95, 77, 78, 79, 0, 100, 101, 102, 103, 104, 105, 106, 107,
108, 109, 110])array([ 0, 1, 2, ..., 1015, 1016, 1017])
array(['2002-05-14T05:00:00.000000000', '2002-05-24T05:06:00.000000000',
'2006-03-13T03:30:00.000000000', '2006-12-22T12:27:44.000000000',
'2007-01-01T13:16:36.000000000', '2011-12-06T00:58:02.000000000',
'2012-12-29T23:17:55.000000000', '2013-01-14T02:29:24.000000000',
'2013-01-28T23:26:14.000000000', '2014-02-17T08:53:45.000000000',
'2014-02-27T06:52:43.000000000', '2014-03-15T14:21:36.000000000',
'2014-04-14T10:45:41.000000000', '2014-04-24T14:21:59.000000000',
'2014-05-04T11:45:41.000000000', '2015-04-30T05:56:00.000000000',
'2015-05-04T06:29:00.000000000', '2015-05-05T05:51:00.000000000',
'2015-05-10T05:59:00.000000000', '2015-05-14T06:33:38.000000000',
'2015-05-24T06:27:52.000000000', '2015-05-25T05:54:00.000000000',
'2015-05-30T06:01:00.000000000', '2016-02-09T14:48:18.000000000',
'2016-02-14T14:46:59.000000000', '2016-02-19T15:07:45.000000000',
'2016-02-24T14:14:17.000000000', '2017-01-02T06:23:20.000000000',
'2017-01-07T06:25:20.000000000', '2017-01-12T06:23:20.000000000',
'2017-01-17T06:26:20.000000000', '2017-01-22T06:22:20.000000000',
'2017-02-21T06:15:20.000000000', '2017-02-26T06:29:20.000000000',
'2017-03-03T06:29:20.000000000', '2018-05-07T01:39:23.000000000',
'2019-01-03T05:40:00.000000000', '2019-01-13T05:34:00.000000000',
'2019-01-23T05:39:00.000000000', '2019-02-02T05:33:00.000000000',
'2019-02-12T05:36:00.000000000', '2019-02-22T05:29:00.000000000',
'2019-03-04T05:32:00.000000000', '2019-03-14T05:36:00.000000000',
'2020-04-15T05:18:00.000000000', '2020-04-25T05:37:00.000000000',
'2020-05-25T05:29:00.000000000', '2020-12-10T18:26:00.000000000',
'2020-12-12T05:26:30.000000000', '2020-12-22T05:27:30.000000000',
'2021-01-01T05:33:30.000000000', '2021-01-11T05:37:30.000000000',
'2021-01-21T05:34:30.000000000', '2021-01-31T05:26:30.000000000',
'2021-02-10T05:37:30.000000000', '2021-02-20T05:30:30.000000000',
'2021-04-11T05:38:30.000000000', '2021-04-21T05:42:30.000000000',
'2021-05-01T05:46:30.000000000'], dtype='datetime64[ns]')array([-19.302 , -19.235 , -18.87 , -19.47299957,
-19.71800041, -19.259 , -19.483 , -19.414 ,
-18.873 , -19.064 , -19.575 , -19.538 ,
-19.502 , -19.575 , -19.743 , -18.87676667,
-18.855 , -18.92749667, -18.95606 , -18.978 ,
-19.464 , -18.93842167, -18.99732 , -18.9591 ,
-19.0942 , -19.1418 , -19.1425 , -19.26507 ,
-19.33983 , -19.43046333, -19.55742167, -19.752885 ,
-19.76117833, -19.57670167, -19.56884 , -19.7348 ,
-18.952 , -19.104 , -19.234 , -19.266 ,
-19.164 , -19.009 , -19.011 , -19.095 ,
-18.917 , -19.45 , -19.436 , -19.00882667,
-19.00287833, -19.10077167, -19.18482 , -19.22271333,
-19.26173167, -19.32334333, -19.46715667, -19.65580833,
-19.75431167, -19.47863 , -18.96217 ])array([29.08 , 29.311 , 29.784 , 29.99500084, 29.75900078,
29.981 , 29.499 , 29.401 , 29.631 , 29.065 ,
29.484 , 29.106 , 29.858 , 29.399 , 29.099 ,
29.20940333, 29.877 , 29.11013167, 29.02015 , 29.482 ,
29.468 , 29.14659167, 29.30861 , 29.2527 , 29.2881 ,
29.2294 , 29.0604 , 29.84341667, 29.61126833, 29.47364 ,
29.38462 , 29.34008 , 29.695575 , 29.45801667, 29.1975 ,
29.19438 , 29.985 , 29.671 , 29.335 , 29.124 ,
29.06 , 29.162 , 29.496 , 29.947 , 29.401 ,
29.711 , 29.441 , 29.165725 , 29.150605 , 29.13182833,
29.12126333, 29.09465167, 29.18438 , 29.42158667, 29.65736833,
29.91031 , 29.670635 , 29.50829 , 29.58076333])array([ 2., 2., 2., 1., 1., 1., 1., 1., 1., -1., -1., -1., -1.,
-1., -1., 4., 1., 4., 4., 1., 1., 4., 4., 61., 55., 61.,
64., 1., 1., 1., 1., 1., 1., 1., 1., 5., 2., 2., 2.,
2., 2., 2., 2., 2., 3., 3., 3., 1., 1., 2., 2., 2.,
2., 2., 2., 2., 2., 2., 2.])array([ 5., 6., 60., 6., 7., 113., 139., 140., 141., 50., 51.,
90., 93., 94., 95., 12., 182., 13., 14., 183., 184., 17.,
18., 126., 127., 128., 129., 12., 13., 14., 15., 16., 22.,
23., 24., 174., 22., 23., 24., 25., 26., 27., 28., 29.,
58., 59., 62., 1., 1., 2., 3., 4., 5., 6., 7.,
8., 13., 14., 15.])array(['D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D',
'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'D', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'D', 'R', 'R', 'R',
'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
'R', 'R', 'R', 'R', 'R', 'R', 'R'], dtype=object)array(['A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'D', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A'], dtype=object)array([1900070., 1900070., 1900352., 1900735., 1900735., 6900512.,
6900512., 6900512., 6900512., 6901143., 6901143., 6901124.,
6901124., 6901124., 6901124., 6901246., 1901457., 6901246.,
6901246., 1901457., 1901457., 6901246., 6901246., 6901156.,
6901156., 6901156., 6901156., 6901248., 6901248., 6901248.,
6901248., 6901248., 6901248., 6901248., 6901248., 4901588.,
6901258., 6901258., 6901258., 6901258., 6901258., 6901258.,
6901258., 6901258., 6901254., 6901254., 6901254., 6903010.,
6903010., 6903010., 6903010., 6903010., 6903010., 6903010.,
6903010., 6903010., 6903010., 6903010., 6903010.])array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1.])array([[ 15. , 25. , 35. , ..., nan, nan, nan],
[ 15. , 25. , 35. , ..., nan, nan, nan],
[ 15. , 25. , 35. , ..., nan, nan, nan],
...,
[ 2.8, 4. , 4.8, ..., nan, nan, nan],
[ 3.1, 4. , 4.9, ..., 1987.9, 1992.9, 1997.1],
[ 3.1, 3.9, 4.7, ..., nan, nan, nan]],
dtype=float32)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1.])array([[36.873, 36.869, 36.874, ..., nan, nan, nan],
[36.871, 36.875, 36.913, ..., nan, nan, nan],
[36.809, 36.815, 36.815, ..., nan, nan, nan],
...,
[36.835, 36.823, 36.837, ..., nan, nan, nan],
[36.878, 36.875, 36.875, ..., 35.112, 35.111, 35.109],
[36.928, 36.925, 36.93 , ..., nan, nan, nan]],
dtype=float32)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1.])array([[19.40726409, 19.40543947, 19.4036139 , ..., nan,
nan, nan],
[19.78722774, 19.78537799, 19.78352625, ..., nan,
nan, nan],
[18.35436997, 18.33961695, 18.32886377, ..., nan,
nan, nan],
...,
[20.3764726 , 20.25924874, 20.06110463, ..., nan,
nan, nan],
[20.39541459, 20.40224444, 20.4040752 , ..., 4.21991799,
4.20463503, 4.19239349],
[20.66540943, 20.66725578, 20.67210415, ..., nan,
nan, nan]])array([[37.04708601, 37.04304076, 37.04805324, ..., nan,
nan, nan],
[37.04507499, 37.04907054, 37.08723592, ..., nan,
nan, nan],
[36.98278477, 36.9887898 , 36.98877804, ..., nan,
nan, nan],
...,
[37.00891139, 36.99685927, 37.01092647, ..., nan,
nan, nan],
[37.05211241, 37.04910114, 37.04910237, ..., 35.28230475,
35.2813159 , 35.27932028],
[37.10235176, 37.09933631, 37.10436188, ..., nan,
nan, nan]])array([[26.35062107, 26.34802296, 26.35231168, ..., nan,
nan, nan],
[26.24904555, 26.25257105, 26.282057 , ..., nan,
nan, nan],
[26.57246592, 26.58076757, 26.58347341, ..., nan,
nan, nan],
...,
[26.06405727, 26.08647652, 26.15025105, ..., nan,
nan, nan],
[26.09172676, 26.08759759, 26.08710412, ..., 27.85589967,
27.85676311, 27.85650052],
[26.05662937, 26.05383959, 26.05633067, ..., nan,
nan, nan]])array([[19.41 , 19.41 , 19.41 , ..., nan, nan, nan],
[19.79 , 19.79 , 19.79 , ..., nan, nan, nan],
[18.357, 18.344, 18.335, ..., nan, nan, nan],
...,
[20.377, 20.26 , 20.062, ..., nan, nan, nan],
[20.396, 20.403, 20.405, ..., 4.393, 4.378, 4.366],
[20.666, 20.668, 20.673, ..., nan, nan, nan]],
dtype=float32)array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1.])array([1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1., 1.,
1., 1., 1., 1., 1., 1., 1., 1.])array([ 5., 5., 3., 12., 1., 12., 12., 1., 1., 2., 2., 3., 4.,
4., 5., 4., 5., 5., 5., 5., 5., 5., 5., 2., 2., 2.,
2., 1., 1., 1., 1., 1., 2., 2., 3., 5., 1., 1., 1.,
2., 2., 2., 3., 3., 4., 4., 5., 12., 12., 12., 1., 1.,
1., 1., 2., 2., 4., 4., 5.])ds0b=ds0.isel(N_PROF=[0,1,2,3,4,5,6,7,8])
ds1b=ds1.isel(N_PROF=[0,1,2,3,4,5,6,7,8])
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b)
ax[0,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[0,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[1,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=0.5,zorder=0)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
<matplotlib.legend.Legend at 0x7f9c712f2fd0>
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b,markersize=4)
ax[0,0].set_ylim(2000,1500)
ax[0,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[0,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[1,0].plot(px['TEMP'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[1,1].plot(px['PSAL'],-gsw.z_from_p(px['PRES'],px['LATITUDE'].mean()),'.r',markersize=4,zorder=0)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='RBR Floats',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Nearby profiles',markerfacecolor='r', markersize=10),
],loc='upper right', bbox_to_anchor=(1.3, 1))
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b)
sc_b=ax[0].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',zorder=0)
sc_b=ax[1].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',zorder=0)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c6682fc18>
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b,vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',zorder=0)
sc_b=ax[1].scatter(px['SA'],px['PTEMP'],c=px['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',zorder=0)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Nearby profiles',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c66566a20>
st25=pd.read_csv('../data/ref/RAPROCAN2012/Station25.csv',header=4,sep=';',names=['PRES','PSAL','TEMP'])
mt25={'latitude':29.17,'longitude':-19.00,'time':np.datetime64('2020-12-10T17:41:05')}
st25['SA'] = gsw.SA_from_SP(st25['PSAL'],st25['PRES'],mt25['longitude'],mt25['latitude'])
st25['PTEMP'] = gsw.pt0_from_t(st25['SA'],st25['TEMP'],st25['PRES'])
st25['SIG0'] = gsw.sigma0(st25['SA'], st25['PTEMP'])
st25.head()
| PRES | PSAL | TEMP | SA | PTEMP | SIG0 | |
|---|---|---|---|---|---|---|
| 0 | 8.0 | 36.9540 | 21.3449 | 37.128475 | 21.343339 | 25.870281 |
| 1 | 10.0 | 36.9541 | 21.3478 | 37.128578 | 21.345849 | 25.869658 |
| 2 | 12.0 | 36.9539 | 21.3508 | 37.128373 | 21.348458 | 25.868777 |
| 3 | 14.0 | 36.9539 | 21.3484 | 37.128369 | 21.345668 | 25.869552 |
| 4 | 16.0 | 36.9543 | 21.3442 | 37.128767 | 21.341078 | 25.871130 |
# LET's KEEP ONLY THE 1st PROFILES
ds0b=ds0.isel(N_PROF=[0,1,2,3])
ds1b=ds1.isel(N_PROF=[0,1,2,3])
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b)
ax[0,0].set_ylim([2000,0]);
ax[0,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[0,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[1,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=1)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c6b8225c0>
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b,markersize=4)
ax[0,0].set_ylim([2000,1500]);
ax[0,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[0,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(st25['TEMP'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[1,1].plot(st25['PSAL'],-gsw.z_from_p(st25['PRES'],mt25['latitude']),'.r',markersize=4)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='Station 25 - RAPROCAN2012 ',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b)
sc_b=ax[0].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c680198d0>
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b,vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(st25['SA'],st25['PTEMP'],c=st25['SIG0'],s=20,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='Station 25 - RAPROCAN2012',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c67d044a8>
# GET DATA FROM REPO DATA COPY (cache=False because new profiles are added to the repo)
dsbe = DataFetcher(cache=False,src='erddap',mode='expert').float(6903010).to_xarray()
# CALCULATE TEOS10 VARIABLE
dsbe.argo.teos10(['SA','SIG0','PTEMP'])
# TURN TO PROFILES
dsbe = dsbe.argo.point2profile()
dsbe
<xarray.Dataset>
Dimensions: (N_LEVELS: 1018, N_PROF: 20)
Coordinates:
* N_LEVELS (N_LEVELS) int64 0 1 2 3 4 ... 1014 1015 1016 1017
TIME (N_PROF) datetime64[ns] 2020-12-10T18:26:00 ......
LONGITUDE (N_PROF) float64 -19.01 -19.0 ... -18.82 -18.73
LATITUDE (N_PROF) float64 29.17 29.15 29.13 ... 30.8 30.97
* N_PROF (N_PROF) int64 0 1 2 3 4 5 6 ... 14 15 16 17 18 19
Data variables:
CONFIG_MISSION_NUMBER (N_PROF) int64 1 1 2 2 2 2 2 2 ... 2 2 2 2 2 2 2 2
CYCLE_NUMBER (N_PROF) int64 1 1 2 3 4 5 6 ... 14 15 16 17 18 19
DATA_MODE (N_PROF) <U1 'R' 'R' 'R' 'R' ... 'R' 'R' 'R' 'R'
DIRECTION (N_PROF) <U1 'D' 'A' 'A' 'A' ... 'A' 'A' 'A' 'A'
PLATFORM_NUMBER (N_PROF) int64 6903010 6903010 ... 6903010 6903010
POSITION_QC (N_PROF) int64 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
PRES (N_PROF, N_LEVELS) float32 8.7 10.4 ... nan nan
PRES_ADJUSTED (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PRES_ADJUSTED_ERROR (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PRES_ADJUSTED_QC (N_PROF) int64 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0
PRES_QC (N_PROF) int64 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
PSAL (N_PROF, N_LEVELS) float32 36.946 36.947 ... nan
PSAL_ADJUSTED (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PSAL_ADJUSTED_ERROR (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
PSAL_ADJUSTED_QC (N_PROF) int64 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0
PSAL_QC (N_PROF, N_LEVELS) int64 1 1 1 ... 99999 99999
PTEMP (N_PROF, N_LEVELS) float64 21.32 21.32 ... nan nan
SA (N_PROF, N_LEVELS) float64 37.12 37.12 ... nan nan
SIG0 (N_PROF, N_LEVELS) float64 25.89 25.89 ... nan nan
TEMP (N_PROF, N_LEVELS) float32 21.32 21.325 ... nan
TEMP_ADJUSTED (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
TEMP_ADJUSTED_ERROR (N_PROF, N_LEVELS) float32 nan nan nan ... nan nan
TEMP_ADJUSTED_QC (N_PROF) int64 0 0 0 0 0 0 0 0 ... 0 0 0 0 0 0 0 0
TEMP_QC (N_PROF, N_LEVELS) int64 1 1 1 ... 99999 99999
TIME_QC (N_PROF) int64 1 1 1 1 1 1 1 1 ... 1 1 1 1 1 1 1 1
VERTICAL_SAMPLING_SCHEME (N_PROF) <U207 'Primary sampling: averaged [10 ...
Attributes:
DATA_ID: ARGO
DOI: http://doi.org/10.17882/42182
Fetched_from: https://www.ifremer.fr/erddap
Fetched_by: kbalem
Fetched_date: 2021/06/15
Fetched_constraints: phy;WMO6903010
Fetched_uri: ['https://www.ifremer.fr/erddap/tabledap/ArgoFloats...
history: Transformed with point2profilearray([ 0, 1, 2, ..., 1015, 1016, 1017])
array(['2020-12-10T18:26:00.000000000', '2020-12-12T05:26:30.000000000',
'2020-12-22T05:27:30.000000000', '2021-01-01T05:33:30.000000000',
'2021-01-11T05:37:30.000000000', '2021-01-21T05:34:30.000000000',
'2021-01-31T05:26:30.000000000', '2021-02-10T05:37:30.000000000',
'2021-02-20T05:30:30.000000000', '2021-03-02T05:38:30.000000000',
'2021-03-12T05:33:30.000000000', '2021-03-22T05:25:30.000000000',
'2021-04-01T05:35:30.000000000', '2021-04-11T05:38:30.000000000',
'2021-04-21T05:42:30.000000000', '2021-05-01T05:46:30.000000000',
'2021-05-11T05:45:30.000000000', '2021-05-21T05:47:30.000000000',
'2021-05-31T05:37:30.000000000', '2021-06-10T05:27:30.000000000'],
dtype='datetime64[ns]')array([-19.00882667, -19.00287833, -19.10077167, -19.18482 ,
-19.22271333, -19.26173167, -19.32334333, -19.46715667,
-19.65580833, -19.75253833, -19.77647 , -19.868995 ,
-19.82508833, -19.75431167, -19.47863 , -18.96217 ,
-18.65334 , -18.73503833, -18.81796667, -18.73460167])array([29.165725 , 29.150605 , 29.13182833, 29.12126333, 29.09465167,
29.18438 , 29.42158667, 29.65736833, 29.91031 , 30.14338667,
30.22611333, 30.13541333, 29.86356 , 29.670635 , 29.50829 ,
29.58076333, 29.95490167, 30.46821667, 30.79612167, 30.96628167])array([ 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17,
18, 19])array([1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2])
array([ 1, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16,
17, 18, 19])array(['R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R', 'R',
'R', 'R', 'R', 'R', 'R', 'R', 'R'], dtype='<U1')array(['D', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A', 'A',
'A', 'A', 'A', 'A', 'A', 'A', 'A'], dtype='<U1')array([6903010, 6903010, 6903010, 6903010, 6903010, 6903010, 6903010,
6903010, 6903010, 6903010, 6903010, 6903010, 6903010, 6903010,
6903010, 6903010, 6903010, 6903010, 6903010, 6903010])array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
array([[ 8.7, 10.4, 12.3, ..., nan, nan, nan],
[ 2.8, 4. , 5. , ..., nan, nan, nan],
[ 3. , 4.2, 5. , ..., nan, nan, nan],
...,
[ 3. , 4. , 5.2, ..., nan, nan, nan],
[ 3.9, 5.3, 6.1, ..., nan, nan, nan],
[ 3. , 4.1, 4.8, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
array([[36.946, 36.947, 36.947, ..., nan, nan, nan],
[36.945, 36.945, 36.945, ..., nan, nan, nan],
[36.954, 36.957, 36.957, ..., nan, nan, nan],
...,
[36.971, 36.971, 36.971, ..., nan, nan, nan],
[37.025, 37.023, 37.023, ..., nan, nan, nan],
[36.962, 36.962, 36.964, ..., nan, nan, nan]],
dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
array([[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
...,
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999]])array([[21.31830394, 21.32297325, 21.32460151, ..., nan,
nan, nan],
[21.22645527, 21.22822286, 21.23002928, ..., nan,
nan, nan],
[20.9804228 , 20.9831898 , 20.9830356 , ..., nan,
nan, nan],
...,
[20.87942298, 20.87723205, 20.87800099, ..., nan,
nan, nan],
[20.89025121, 20.89998011, 20.89682806, ..., nan,
nan, nan],
[21.0174208 , 21.01820796, 21.01607403, ..., nan,
nan, nan]])array([[37.1204376 , 37.12144259, 37.12143883, ..., nan,
nan, nan],
[37.11942595, 37.11942744, 37.11942869, ..., nan,
nan, nan],
[37.12846748, 37.13148538, 37.13148642, ..., nan,
nan, nan],
...,
[37.14556279, 37.14556353, 37.14556442, ..., nan,
nan, nan],
[37.19982282, 37.19781157, 37.19781209, ..., nan,
nan, nan],
[37.13652682, 37.13652744, 37.13853617, ..., nan,
nan, nan]])array([[25.89078343, 25.89024791, 25.8897928 , ..., nan,
nan, nan],
[25.91548947, 25.91500105, 25.91450166, ..., nan,
nan, nan],
[25.99023381, 25.99176049, 25.99180368, ..., nan,
nan, nan],
...,
[26.03092169, 26.03152285, 26.03131274, ..., nan,
nan, nan],
[26.06908856, 26.06489469, 26.06575992, ..., nan,
nan, nan],
[25.98616411, 25.9859479 , 25.98805776, ..., nan,
nan, nan]])array([[21.32 , 21.325, 21.327, ..., nan, nan, nan],
[21.227, 21.229, 21.231, ..., nan, nan, nan],
[20.981, 20.984, 20.984, ..., nan, nan, nan],
...,
[20.88 , 20.878, 20.879, ..., nan, nan, nan],
[20.891, 20.901, 20.898, ..., nan, nan, nan],
[21.018, 21.019, 21.017, ..., nan, nan, nan]],
dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
...,
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan],
[nan, nan, nan, ..., nan, nan, nan]], dtype=float32)array([0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0, 0])
array([[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
...,
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999],
[ 1, 1, 1, ..., 99999, 99999, 99999]])array([1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1])
array(['Primary sampling: averaged [10 sec sampling, 1 dbar average from surface to 400 dbar; 10 sec sampling, 2 dbar average from 400 dbar to 1400 dbar; 10 sec sampling, 5 dbar average from 1400 dbar to 1000 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.7 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.8 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.5 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.1 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.1 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.4 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.2 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.5 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.3 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.3 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.6 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.2 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.6 dbar]',
'Primary sampling: averaged [10 sec sampling, 5 dbar average from 2000 dbar to 1400 dbar; 10 sec sampling, 2 dbar average from 1400 dbar to 400 dbar; 10 sec sampling, 1 dbar average from 400 dbar to 2.0 dbar]'],
dtype='<U207')fig=plt.figure(figsize=(10,6))
ax = fig.add_subplot(1, 1, 1, projection=ccrs.PlateCarree())
plt.plot(dsbe['LONGITUDE'],dsbe['LATITUDE'],'ro-',label='SBE 6903010')
plt.plot(ds0['LONGITUDE'],ds0['LATITUDE'],'bo-',label='RBR 6903075')
plt.plot(ds1['LONGITUDE'],ds1['LATITUDE'],'go-',label='RBR 6903076')
plt.xlim([-19.3,-18.9])
plt.ylim([29,29.2])
plt.legend()
<matplotlib.legend.Legend at 0x7f9c67aa2668>
We'll plot only until CYCLE 10, after that profiles positions differ a bit
ds0b=ds0.isel(N_PROF=[0,1,2,3,4,5,6,7,8,9])
ds1b=ds1.isel(N_PROF=[0,1,2,3,4,5,6,7,8,9])
dsbe0=dsbe.isel(N_PROF=[0,1,2,3,4,5,6,7,8,9])
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b)
ax[0,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[0,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[1,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=0.5)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c5ec63278>
# ZOOM
fig,ax = full_profiles(ds0=ds0b,ds1=ds1b,markersize=4)
ax[0,0].set_ylim([2000,1500]);
ax[0,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[0,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[0,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[1,0].plot(dsbe0['TEMP'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[1,1].plot(dsbe0['PSAL'],-gsw.z_from_p(dsbe0['PRES'],dsbe0['LATITUDE'].mean()),'.r',markersize=4)
ax[1,1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='k', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label='SBE Float 6903010',markerfacecolor='r', markersize=10),
],loc='lower right')
ax[0,0].set_xlim(4,6.5); ax[1,0].set_xlim(4,6.5);
ax[0,1].set_xlim(35.,35.5); ax[1,1].set_xlim(35.,35.5);
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b)
sc_b=ax[0].scatter(dsbe0['SA'],dsbe0['PTEMP'],c=dsbe0['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(dsbe0['SA'],dsbe0['PTEMP'],c=dsbe0['SIG0'],s=20,cmap=cm.cm.matter,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c54196fd0>
# TS DIAGRAM
fig,ax = full_ts(ds0=ds0b,ds1=ds1b,vmin=27.8,vmax=27.9,sigma=40)
ax[0].set_ylim(4,7.5); ax[1].set_ylim(4,7.5)
ax[0].set_xlim(35.2,35.6); ax[1].set_xlim(35.2,35.6)
sc_b=ax[0].scatter(ds1b['SA'],ds1b['PTEMP'],c=ds1b['SIG0'],s=10,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
sc_b=ax[1].scatter(ds1b['SA'],ds1b['PTEMP'],c=ds1b['SIG0'],s=10,cmap=cm.cm.matter,vmin=27.8,vmax=27.9,marker='o',edgecolor='k',linewidths=0.5)
ax[0].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[0])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
ax[1].legend(handles=[Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=0,
label=str(wmos[1])+' Float',markerfacecolor='orange', markersize=10),
Line2D([0], [0], marker='o', linewidth=0, markeredgewidth=1, color='k',
label='SBE Float 6903010',markerfacecolor='orange', markersize=10),
],loc='lower right')
<matplotlib.legend.Legend at 0x7f9c53f09d30>
from wrangling import interp_climatology
ref_sal = st25['SA'].values
ref_theta = st25['PTEMP'].values
ref_pres = st25['PRES'].values
#INTERP REF STATION ON 6903075 THETA LEVELS
SA_i0, PR_i0 = interp_climatology(np.array([ds0.isel(N_PROF=1)['SA'].values,]*2).transpose(),
np.array([ds0.isel(N_PROF=1)['PTEMP'].values,]*2).transpose(),
np.array([ds0.isel(N_PROF=1)['PRES'].values,]*2).transpose(),
ref_sal, ref_theta, ref_pres)
SA_i0 = SA_i0[:,0]
PR_i0 = PR_i0[:,0]
#INTERP 6903076 ON 6903075 THETA LEVELS
SA_i1, PR_i1 = interp_climatology(np.array([ds1.isel(N_PROF=1)['SA'].values,]*2).transpose(),
np.array([ds1.isel(N_PROF=1)['PTEMP'].values,]*2).transpose(),
np.array([ds1.isel(N_PROF=1)['PRES'].values,]*2).transpose(),
ref_sal, ref_theta, ref_pres)
SA_i1 = SA_i1[:,0]
PR_i1 = PR_i1[:,0]
#INTERP 6903010 ON 6903075 THETA LEVELS
SA_i2, PR_i2 = interp_climatology(np.array([dsbe.isel(N_PROF=1)['SA'].values,]*2).transpose(),
np.array([dsbe.isel(N_PROF=1)['PTEMP'].values,]*2).transpose(),
np.array([dsbe.isel(N_PROF=1)['PRES'].values,]*2).transpose(),
ref_sal, ref_theta, ref_pres)
SA_i2 = SA_i2[:,0]
PR_i2 = PR_i2[:,0]
fig,ax = plt.subplots(1,2,figsize=(15,10),sharey=True)
ax[0].invert_yaxis();
ax[0].plot(SA_i0 - ref_sal, ref_pres,label='6903075')
ax[0].plot(SA_i1 - ref_sal, ref_pres,label='6903076')
ax[0].plot(SA_i2 - ref_sal, ref_pres,label='6903010')
ax[0].legend()
ax[0].set_xlabel('Delta Salinity with St25',fontsize='large',fontweight='bold')
ax[0].set_ylabel('PRES',fontsize='large',fontweight='bold')
ax[1].plot(PR_i0 - ref_pres, ref_pres,label='6903075')
ax[1].plot(PR_i1 - ref_pres, ref_pres,label='6903076')
ax[1].plot(PR_i2 - ref_pres, ref_pres,label='6903010')
ax[1].legend()
ax[1].set_xlabel('Delta Pressure with St25',fontsize='large',fontweight='bold')
plt.tight_layout()
def along_isot(isotherm):
fig,ax = plt.subplots(2,1,figsize=(18,12),sharex=True)
ds0_ai = ds0.where((ds0['PTEMP']<isotherm+.1)&(ds0['PTEMP']>isotherm-.1),drop=True).mean('N_LEVELS')
ds1_ai = ds1.where((ds1['PTEMP']<isotherm+.1)&(ds1['PTEMP']>isotherm-.1),drop=True).mean('N_LEVELS')
dsbe_ai = dsbe.where((dsbe['PTEMP']<isotherm+.1)&(dsbe['PTEMP']>isotherm-.1),drop=True).mean('N_LEVELS')
ax[0].plot(ds0_ai['CYCLE_NUMBER'],ds0_ai['PRES'],'o-',label=str(wmos[0]))
ax[0].plot(ds1_ai['CYCLE_NUMBER'],ds1_ai['PRES'],'o-',label=str(wmos[1]))
ax[0].plot(dsbe_ai['CYCLE_NUMBER'],dsbe_ai['PRES'],'o-',label='sbe 6903010')
#ax[0].set_xlabel('CYCLE')
ax[0].set_ylabel('PRES')
ax[0].legend()
ax[0].set_title('Pressure along isotherm '+str(isotherm)+'°C')
ax[1].plot(ds0_ai['CYCLE_NUMBER'],ds0_ai['SA'],'o-',label=str(wmos[0]))
ax[1].plot(ds1_ai['CYCLE_NUMBER'],ds1_ai['SA'],'o-',label=str(wmos[1]))
ax[1].plot(dsbe_ai['CYCLE_NUMBER'],dsbe_ai['SA'],'o-',label='sbe 6903010')
ax[1].set_xlabel('CYCLE')
ax[1].set_ylabel('Salinity')
ax[1].legend()
ax[1].set_title('Salinity along isotherm '+str(isotherm)+'°C')
return fig,ax
for i in [10.,5.]:
fig,ax = along_isot(i)
/opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype) /opt/anaconda3/lib/python3.7/site-packages/xarray/core/nanops.py:142: RuntimeWarning: Mean of empty slice return np.nanmean(a, axis=axis, dtype=dtype)
Virginie :
Le 6903076 et le 6903010 sont proches en salinité le 6903075 est plus salé que les 2 autres mais plus proche de la station de référence.
donc le 6903076 et le 6903010 sous-estiment la salinité. il faudrait faire tourner OW sur le SBE 6903010 pour confirmer.
Objs :
Appliquer OWC sur les 3 flotteurs
Comparaison sur niveaux theta : profil de différence entre flotteurs/CTD sur niveaux theta
Envoyer données à M.Dever (WHOI)